<?php
// 子空间的命名
// 比如下面两个空间都在Blog这个空间里面
// 就像大目录下面有文件夹一样
// 我们顺便给这个脚本添加两个命名空间
// 除了定义类之外，我们可以在各自的命名空间各自的常量，变量，函数
namespace Blog\Article;
const PATH = "blog/article";
function getArticlePath() {
	return PATH;
}

class Article {
	public function write() {
		echo "写文章";
		echo "<br/>";
	}
}
// 我在Article命名空间调用Comment的类，变量，函数，方法等。
$comment = new \Blog\Comment\Comment();
$comment->post();

namespace Blog\Comment;
// 静态变量
const PATH = 'blog/comment';
// 函数
function getCommentPath() {
	return PATH;
}
class Comment {
	public function post() {
		echo "发表评论";
		echo "<br>";
	}
}

// 在不同的命名空间我们需要带上自己的命名空间去调用自己的类，函数，方法，变量等
// 例如我在Comment命名空间调用Article命名空间的write方法
$article = new \Blog\Article\Article();
$article->write();

// 其实命名空间有点像那个文件中找文件一个
// \Article\Article
// \Comment\Comment
// 访问变量和方法
echo "Blog\Article\PATH".\Blog\Article\PATH;
echo "<br/>";
echo "\Blog\Comment\PATH".\Blog\Comment\PATH;
echo "<br/>";
echo "\Blog\Article\getArticlePath".\Blog\Article\getArticlePath();
echo "<br/>";
echo "\Blog\Comment\getCommentPath".\Blog\Comment\getCommentPath();
echo "<br/>";
// 而且，子空间还可以定义很多层次，比如说 Blog\Article\Archives\Date